/**
 * 替换打包后的资源
 * 主要目标是dist中的index2.json没有错别字
 */

class ModifySpellPlugin{
  constructor(options) {
    this.options = options;
  }

  apply(compiler) {
    const _this = this;
    compiler.plugin('emit', function (compilation, callback) {
      const { goal } = _this.options;
      console.log(goal);
      Object.keys(compilation.assets).map(fileName => {
        if(fileName.indexOf(goal) > -1){
          let fileContent = compilation.assets[fileName].source();
          console.log(fileContent);
          let targetList = [
            {s: '帐号', t: '账号'},
            {s: '登陆', t: '登录'},
            {s: '帐套', t: '账套'}
          ];
          let reg = new RegExp(`(${targetList.map(item => `(${item.s})`).join('|')})`,'mg');
          fileContent = fileContent.replace(reg,(target,$1) => {
            targetList.map(item => {
              $1.indexOf(item.s) > -1 && (target = item.t);
            });
            return target;
          });
          compilation.assets[fileName] = {
            source: () => {
              return fileContent;
            },
            size: () => {
              return Buffer.byteLength(fileContent, 'utf8');
            }
          };
        }
      });

      // 这是一个异步事件，要记得调用 callback 通知 Webpack 本次事件监听处理结束。
      // 如果忘记了调用 callback，Webpack 将一直卡在这里而不会往后执行。
      callback();
    })
  }
}

module.exports = ModifySpellPlugin;
